package com.qf.service.Impl;

import com.qf.dao.AccountDao;
import com.qf.pojo.Account;
import com.qf.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

/**
 * @ClassName AccountServiceImpl
 * @Author xiao宋
 * @Date 19:49  2022/9/28
 * @Version 1.0
 * @Description TODO
 * @Controller : 用于表现层
 * @Service ：用于业务层
 * @Repository ：用于持久层
 *
 * @Transactional(readOnly = true,rollbackFor = Exception.class,propagation = Propagation.SUPPORTS)
 *                 是否只读         回滚                              事务的传播 REQUIRED（加事务）  SUPPORTS（不加事务的）
 */
@Service("AccountService")
@Transactional(rollbackFor = Exception.class,propagation = Propagation.REQUIRED)
public class AccountServiceImpl implements AccountService {
    /**
     * Autowired 自动注入，
     * 24行使用注解的话这里也得写不然会报  空指针
     * 然后用了这个，下面set方法就可以注释掉了
     */
    @Autowired
    AccountDao dao;
/*
    public void setDao(AccountDao dao) {
        this.dao = dao;
    }
*/

    public void transfer(String nameA, String nameB, int count) {

//        查钱
        Account a = dao.findByName(nameA);
        Account b = dao.findByName(nameB);

//        转钱
        a.setMoney(a.getMoney() + count);
        b.setMoney(b.getMoney() - count);

//        数据库出账
        dao.update(a);
//        System.out.println(1/0);
        dao.update(b);

    }
}
